<?php

/**
 *  获得指定类目的URL链接
 *  对于使用封面文件和单独页面的情况，强制使用默认页名称
 *
 * @param     int  $typeid  栏目ID
 * @param     string  $typedir  栏目目录
 * @param     int  $isdefault  是否默认
 * @param     string  $defaultname  默认名称
 * @param     int  $ispart  栏目属性
 * @param     string  $namerule2  名称规则
 * @return    string
 */
if ( ! function_exists('GetTypeUrl'))
{
    function GetTypeUrl($typeid,$typedir,$isdefault,$defaultname,$ispart,$namerule2)
    {
        $typedir = MfTypedir($typedir);
        if($isdefault==-1)
        {
            //动态
            $reurl = U("List/index", array("tid" => $typeid));
            //$reurl = __APP__."/list.php?tid=".$typeid;
        }
        else if($ispart==2)
        {
            //跳转网址
            $reurl = $typedir;
            return $reurl;
        }
        else
        {
            if($isdefault==0 && $ispart==0)
            {
                $reurl = str_replace("{page}","1",$namerule2);
                $reurl = str_replace("{tid}",$typeid,$reurl);
                $reurl = str_replace("{typedir}",$typedir,$reurl);
            }
            else
            {
                if($isdefault==0) {
                    $reurl = $typedir.'/'.$defaultname;
                }else{
                    $reurl = $typedir.'/';
                } 
            }
        }

        if( !preg_match("/^http:\/\//",$reurl) ) {
            $reurl = preg_replace("/\/{1,}/i", '/', $reurl);
        }
        
        return $reurl;
    }
}

/**
 *  获取某栏目的url
 *
 * @param     array  $typeinfos  栏目信息
 * @return    string
 */
function GetOneTypeUrlA($typeinfos)
{
    return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),$typeinfos['isdefault'],$typeinfos['defaultname'],
    $typeinfos['ispart'],$typeinfos['namerule2']);
}

/**
 *  栏目目录规则
 *
 * @param     string  $typedir   栏目目录
 * @return    string
 */
function MfTypedir($typedir)
{
    if(preg_match("/^http:|^ftp:/i", $typedir)) return $typedir;
    $typedir = str_replace("{cmspath}",C("CMSPATH"),$typedir);
    $typedir = preg_replace("/\/{1,}/", "/", $typedir);
    return $typedir;
}

/**
 *  获得文章网址
 *  如果要获得文件的路径，直接用
 *  GetFileUrl($aid,$typeid,$timetag,$title,$ismake,$rank,$namerule,$typedir,$money)
 *  即是不指定站点参数则返回相当对根目录的真实路径
 *
 * @param     int  $aid  文档ID
 * @param     int  $typeid  栏目ID
 * @param     int  $timetag  时间戳
 * @param     string  $title  标题
 * @param     int  $ismake  是否生成
 * @param     string  $namerule  名称规则
 * @param     string  $typedir  栏目dir
 * @param     string  $filename  文件名称
 * @return    string
 */
if ( ! function_exists('GetFileUrl'))
{
    function GetFileUrl($aid, $typeid, $timetag, $title, $ismake=0, $namerule='', $typedir='', $filename='')
    {
        $articleUrl = GetFileName($aid,$typeid,$timetag,$title,$ismake,$namerule,$typedir,$filename);
        $sitepath = MfTypedir($sitepath);

        //是否强制使用绝对网址
        if(C("CFG_MULTI_SITE")){
            
            $siteurl = C("CFG_BASEHOST");
            if(!preg_match("/http:/", $articleUrl))
            {
                $articleUrl = $siteurl.$articleUrl;
            }
        }

        return $articleUrl;
    }
}


if ( ! function_exists('GetFileNewName')){
/**
 *  获得新文件名(本函数会自动创建目录)
 *
 * @param     int  $aid  文档ID
 * @param     int  $typeid  栏目ID
 * @param     int  $timetag  时间戳
 * @param     string  $title  标题
 * @param     int  $ismake  是否生成
 * @param     string  $namerule  名称规则
 * @param     string  $typedir  栏目dir
 * @param     string  $filename  文件名称
 * @return    string
 */ 
function GetFileNewName($aid,$typeid,$timetag,$title,$ismake=0,$namerule='',$typedir='',$filename=''){
   $articlename = GetFileName($aid,$typeid,$timetag,$title,$ismake,$namerule,$typedir,$filename);

   /*if(preg_match("/\?/", $articlename))
   {
       return $articlename;
   }


   $slen = strlen($articlename)-1;
   for($i=$slen; $i>=0; $i--){
       if($articlename[$i]=='/')
       {
           $subpos = $i;
           break;
       }
   }
   $okdir = substr($articlename,0,$subpos);
   CreateDir($okdir);*/
   return $articlename;
}
}




if ( ! function_exists('GetFileName')){   
/**
 *  获得文件相对于主站点根目录的物理文件名(动态网址返回url)
 *
 * @param     int  $aid  文档ID
 * @param     int  $typeid  栏目ID
 * @param     int  $timetag  时间戳
 * @param     string  $title  标题
 * @param     int  $ismake  是否生成
 * @param     string  $namerule  名称规则
 * @param     string  $typedir  栏目dir
 * @param     string  $filename  文件名称
 * @return    string
 */
function GetFileName($aid, $typeid, $timetag, $title, $ismake=0, $namerule='', $typedir='', $filename=''){

    if($ismake==0 || $typeid==0 || C("URL_MODEL") == '3'){
        //动态 或 伪静态
        return U("View/index", array("aid" => $aid));

    }else{

        $articleDir = MfTypedir($typedir);
        $articleRule = strtolower($namerule);
        if($articleRule=='')
        {
            $articleRule = strtolower('{typedir}/{Y}/{M}{D}/{aid}' . C("URL_HTML_SUFFIX"));
        }
        if($typedir=='')
        {
            $articleDir  = C("CMSPATH") . C("HTML_DIR");
        }
        $dtime = GetDateMk($timetag);
        list($y, $m, $d) = explode('-', $dtime);
        $arr_rpsource = array('{typedir}','{y}','{m}','{d}','{timestamp}','{aid}','{cc}');
        $arr_rpvalues = array($articleDir,$y, $m, $d, $timetag, $aid, dd2char($m.$d.$aid.$y));
        if($filename != '')
        {
            $articleRule = dirname($articleRule) . '/' . $filename . C("URL_HTML_SUFFIX");
        }
        $articleRule = str_replace($arr_rpsource,$arr_rpvalues,$articleRule);
        if(preg_match("/\{p/", $articleRule))
        {
            $articleRule = str_replace('{pinyin}',GetPinyin($title).'_'.$aid,$articleRule);
            $articleRule = str_replace('{py}',GetPinyin($title,1).'_'.$aid,$articleRule);
        }
        $articleUrl = '/'.preg_replace("/^\//", '', $articleRule);

        return $articleUrl;
    }
}
}

/**
 * 检查语言标识是否合法
 * @param type $nid
 * @return string
 */
function TagCheckLang($nid) {
    $lang = D("Language")->where(array("status"=>1))->getByNid($nid);
    if(isArrayAndNotEmpty($lang)){
        return $nid;
    }else{
        $return_lang = C("DEFAULT_LANG") ? C("DEFAULT_LANG") : "zh-cn";
        return $return_lang;
    }
}



/**
 * 获取栏目信息
 * @param int $typeid   栏目ID
 * @param string $item  需要返回的字段信息，默认返回整个栏目信息数组
 * @return array|string
 */
function getTypeInfo($typeid, $item = "") {
    $type = D("Contype")->getTypeInfos($typeid, false);
    if($item){
        return $type[$item];
    }else{
        return $type;
    }
}

/**
 * 获取栏目名称
 * @param int $typeid
 * @return string
 */
function getTypeInfoName($typeid) {
    return getTypeInfo($typeid, "typename");
}

/**
 * 获取栏目URL
 * @param int $typeid
 * @return string
 */
function getTypeInfoUrl($typeid) {
    return getTypeInfo($typeid, "typeurl");
}

/**
 *  默认属性
 *
 * @param     string  $oldvar  旧的值
 * @param     string  $nv      新值
 * @return    string
 */    
function AttDef($oldvar, $nv){
    return empty($oldvar) ? $nv : $oldvar;
}

/**
 * 获取单页URL
 * @param string $item
 * @return string
 */
function getSingleUrl($item) {
    if($item != ''){
        return U("Single/index", array("item" => $item));
    }
    return "";
}